package models

type TkeClusterItem struct {
	ClusterId              string                    `json:"ClusterId,omitnil" name:"ClusterId"`                           // 集群ID
	ClusterName            string                    `json:"ClusterName,omitnil" name:"ClusterName"`                       // 集群名称
	ClusterDescription     string                    `json:"ClusterDescription,omitnil" name:"ClusterDescription"`         // 集群描述
	ClusterVersion         string                    `json:"ClusterVersion,omitnil" name:"ClusterVersion"`                 // 集群版本（默认值为1.10.5）
	ClusterOs              string                    `json:"ClusterOs,omitnil" name:"ClusterOs"`                           // 集群系统。centos7.2x86_64 或者 ubuntu16.04.1 LTSx86_64，默认取值为ubuntu16.04.1 LTSx86_64
	ClusterType            string                    `json:"ClusterType,omitnil" name:"ClusterType"`                       // 集群类型，托管集群：MANAGED_CLUSTER，独立集群：INDEPENDENT_CLUSTER。
	ClusterNetworkSettings TkeClusterNetworkSettings `json:"ClusterNetworkSettings,omitnil" name:"ClusterNetworkSettings"` // 集群网络相关参数
	ClusterNodeNum         uint64                    `json:"ClusterNodeNum,omitnil" name:"ClusterNodeNum"`                 // 集群当前node数量
	ProjectId              uint64                    `json:"ProjectId,omitnil" name:"ProjectId"`                           // 集群所属的项目ID
	ClusterStatus          string                    `json:"ClusterStatus,omitnil" name:"ClusterStatus"`                   // 集群状态 (Trading 集群开通中,Creating 创建中,Running 运行中,Deleting 删除中,Idling 闲置中,Recovering 唤醒中,Scaling 规模调整中,Upgrading 升级中,WaittingForConnect 等待注册,Trading 集群开通中,Isolated 欠费隔离中,Pause 集群升级暂停,NodeUpgrading 节点升级中,RuntimeUpgrading 节点运行时升级中,MasterScaling Master扩缩容中,ClusterLevelUpgrading 调整规格中,ResourceIsolate 隔离中,ResourceIsolated 已隔离,ResourceReverse 冲正中,Abnormal 异常)
	ClusterMaterNodeNum    uint64                    `json:"ClusterMaterNodeNum,omitnil" name:"ClusterMaterNodeNum"`       // 集群当前master数量
	ImageId                string                    `json:"ImageId,omitnil" name:"ImageId"`                               // 集群使用镜像id
	ContainerRuntime       string                    `json:"ContainerRuntime,omitnil" name:"ContainerRuntime"`             // 集群运行环境docker或container
	CreatedTime            string                    `json:"CreatedTime,omitnil" name:"CreatedTime"`                       // 创建时间
	DeletionProtection     bool                      `json:"DeletionProtection,omitnil" name:"DeletionProtection"`         // 删除保护开关
	EnableExternalNode     bool                      `json:"EnableExternalNode,omitnil" name:"EnableExternalNode"`         // 集群是否开启第三方节点支持
	ClusterLevel           string                    `json:"ClusterLevel,omitnil" name:"ClusterLevel"`                     // 集群等级，针对托管集群生效
	RuntimeVersion         string                    `json:"RuntimeVersion,omitnil" name:"RuntimeVersion"`                 // 运行时版本
	ClusterEtcdNodeNum     uint64                    `json:"ClusterEtcdNodeNum,omitnil" name:"ClusterEtcdNodeNum"`         // 集群当前etcd数量
}

type TkeClusterNetworkSettings struct {
	ClusterCIDR               string   `json:"ClusterCIDR,omitnil" name:"ClusterCIDR"`                             // 用于分配集群容器和服务 IP 的 CIDR，不得与 VPC CIDR 冲突，也不得与同 VPC 内其他集群 CIDR 冲突
	IgnoreClusterCIDRConflict bool     `json:"IgnoreClusterCIDRConflict,omitnil" name:"IgnoreClusterCIDRConflict"` // 是否忽略 ClusterCIDR 冲突错误, 默认不忽略
	MaxNodePodNum             uint64   `json:"MaxNodePodNum,omitnil" name:"MaxNodePodNum"`                         // 集群中每个Node上最大的Pod数量(默认为256)
	MaxClusterServiceNum      uint64   `json:"MaxClusterServiceNum,omitnil" name:"MaxClusterServiceNum"`           // 集群最大的service数量(默认为256)
	Ipvs                      bool     `json:"Ipvs,omitnil" name:"Ipvs"`                                           // 是否启用IPVS(默认不开启)
	VpcId                     string   `json:"VpcId,omitnil" name:"VpcId"`                                         // 集群的VPCID（如果创建空集群，为必传值，否则自动设置为和集群的节点保持一致）
	Cni                       bool     `json:"Cni,omitnil" name:"Cni"`                                             // 网络插件是否启用CNI(默认开启)
	KubeProxyMode             string   `json:"KubeProxyMode,omitnil" name:"KubeProxyMode"`                         // service的网络模式，当前参数只适用于ipvs+bpf模式
	ServiceCIDR               string   `json:"ServiceCIDR,omitnil" name:"ServiceCIDR"`                             // 用于分配service的IP range，不得与 VPC CIDR 冲突，也不得与同 VPC 内其他集群 CIDR 冲突
	Subnets                   []string `json:"Subnets,omitnil" name:"Subnets"`                                     // 集群关联的容器子网
	IgnoreServiceCIDRConflict bool     `json:"IgnoreServiceCIDRConflict,omitnil" name:"IgnoreServiceCIDRConflict"` // 是否忽略 ServiceCIDR 冲突错误, 仅在 VPC-CNI 模式生效，默认不忽略
	IsDualStack               bool     `json:"IsDualStack,omitnil" name:"IsDualStack"`                             // 集群VPC-CNI模式是否为非双栈集群，默认false，非双栈。
	Ipv6ServiceCIDR           string   `json:"Ipv6ServiceCIDR,omitnil" name:"Ipv6ServiceCIDR"`                     // 用于分配service的IP range，由系统自动分配
	CiliumMode                string   `json:"CiliumMode,omitnil" name:"CiliumMode"`                               // 集群Cilium Mode配置 // - clusterIP
}

type TkeClusterLevelAttribute struct {
	Name           string `json:"Name,omitnil" name:"Name"`                     // 集群等级
	Alias          string `json:"Alias,omitnil" name:"Alias"`                   // 等级名称
	NodeCount      uint64 `json:"NodeCount,omitnil" name:"NodeCount"`           // 节点数量
	PodCount       uint64 `json:"PodCount,omitnil" name:"PodCount"`             // Pod数量
	ConfigMapCount uint64 `json:"ConfigMapCount,omitnil" name:"ConfigMapCount"` // Configmap数量
	RSCount        uint64 `json:"RSCount,omitnil" name:"RSCount"`               // ReplicaSets数量
	CRDCount       uint64 `json:"CRDCount,omitnil" name:"CRDCount"`             // CRD数量
	Enable         bool   `json:"Enable,omitnil" name:"Enable"`                 // 是否启用
	OtherCount     uint64 `json:"OtherCount,omitnil" name:"OtherCount"`         // 其他资源数量
}
